﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Entidades;
using LogicaNegocio;

namespace PresentacionEscritorio
{
    public partial class frmConsultarEmpleado : Form, IOpcion
    {
        private GestorEmpleado GE = new GestorEmpleado();
        private GestorCargo GC = new GestorCargo();
        private GestorTiposDocumento GTD = new GestorTiposDocumento();
        private List<Empleado> listE = null;
        private frmRegistrarEmpleado frmEmpleado;



        private string opcionElegida;

        public frmConsultarEmpleado()
        {
           // opcionElegida = op;
            InitializeComponent();
        }


        //LOAD FORM
        private void frmConsultarEmpleado_Load(object sender, EventArgs e)
        {

            cargarGrilla();
            switch (opcionElegida)
            {
                case Opcion.OpConsultar:
                    this.Text = "Consultar Empleado - TodoSalud";
                    lblEmpleado.Text = "Consultar Empleado";
                    break;
                case Opcion.OpModificar:
                    this.Text = "Modificar Empleado - TodoSalud";
                    lblEmpleado.Text = "Modificar Empleado";
                    break;
                case Opcion.OpDarBaja:
                    this.Text = "Dar baja a Empleado - TodoSalud";
                    lblEmpleado.Text = "Dar Baja a Empleado";
                    break;
            }
        }
        //CARGAR GRiLLA
        private void cargarGrilla()
        {
            listE = GE.ObtenerTodosActivos();
            dtgConsultaEmpleado.DataSource = null;
            dtgConsultaEmpleado.Rows.Clear();
            int i = 0;
            foreach (Empleado oE in listE)
            {
                i = dtgConsultaEmpleado.Rows.Add();
                dtgConsultaEmpleado.Rows[i].Cells["Nombre"].Value = oE.Nombre;
                dtgConsultaEmpleado.Rows[i].Cells["Apellido"].Value = oE.Apellido;
                dtgConsultaEmpleado.Rows[i].Cells["NumDoc"].Value = oE.NroDocumento;
                dtgConsultaEmpleado.Rows[i].Cells["legajo"].Value = oE.Legajo;
                dtgConsultaEmpleado.Rows[i].Cells["Cargo"].Value = GC.obtenerCargo(oE.idCargo).nombre;
                if (oE.fechaBaja != null)
                {
                    dtgConsultaEmpleado.Rows[i].Cells["fechaBaja"].Value = oE.fechaBaja;
                }
                else
                {
                    dtgConsultaEmpleado.Rows[i].Cells["fechaBaja"].Value = "S/D";
                }
            }

        }
        //VALIDAMOS DATOS INGRESADOS
        private bool validar()
        {
            bool validacion = true;
            string error = "";
            if (!string.IsNullOrEmpty(txtLegajo.Text))
            {
                long legajo;
                bool resultado;
                resultado = long.TryParse(txtLegajo.Text, out legajo);
                if (!resultado)
                {
                    validacion = false;
                    error += "El legajo debe ser un número\r\n";
                    txtLegajo.Text = "";
                }
            }
            if (error != "")
            {
                MessageBox.Show(error, "Aviso", MessageBoxButtons.OK);
            }
            return validacion;
        }
        //BUSQUEDA DE EMPLEADO
        private void btnBuscarEmp_Click(object sender, EventArgs e)
        {
            long? emLegajo=null;
            string emApellido="";
            long? emNumdoc=null;

            if (!string.IsNullOrEmpty(txtLegajo.Text))
            {
                emLegajo = long.Parse(txtLegajo.Text);
            }

            if (!string.IsNullOrEmpty(txtNroDocuEmp.Text))
            {
                emNumdoc = int.Parse(txtNroDocuEmp.Text);
            }
            if (!string.IsNullOrEmpty(txtApellidoEmp.Text))
            {
                emApellido = txtApellidoEmp.Text;
            }

            if (validar())
            {
                List<Empleado> lstEmp = new List<Empleado>();
                lstEmp = GE.obtenerEmpleado(emLegajo, emNumdoc, emApellido);


                dtgConsultaEmpleado.DataSource = null;
                dtgConsultaEmpleado.Rows.Clear();
              
                int i = 0;
                foreach (Empleado oE in lstEmp)
                {
                    i = dtgConsultaEmpleado.Rows.Add();
                    dtgConsultaEmpleado.Rows[i].Cells["Nombre"].Value = oE.Nombre;
                    dtgConsultaEmpleado.Rows[i].Cells["Apellido"].Value = oE.Apellido;
                    dtgConsultaEmpleado.Rows[i].Cells["NumDoc"].Value = oE.NroDocumento;
                    dtgConsultaEmpleado.Rows[i].Cells["legajo"].Value = oE.Legajo;
                    if (oE.fechaBaja!=null)
                    {
                        dtgConsultaEmpleado.Rows[i].Cells["fechaBaja"].Value = oE.fechaBaja;
                    }
                    else
                    {
                        dtgConsultaEmpleado.Rows[i].Cells["fechaBaja"].Value = "S/D";
                    }
                    dtgConsultaEmpleado.Rows[i].Cells["Cargo"].Value = GC.obtenerCargo(oE.idCargo).nombre;
                }



            }

        }

        //SELECCION DE EMPLEADO EN GRILLA
        private void dtgConsultaEmpleado_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dtgConsultaEmpleado.CurrentCell.OwningColumn == dtgConsultaEmpleado.Columns["seleccionar"])
            {


                long legajoEmpleado = long.Parse(dtgConsultaEmpleado.Rows[e.RowIndex].Cells["legajo"].Value.ToString());

                frmEmpleado = new frmRegistrarEmpleado();
                frmEmpleado.emSeleccionado = GE.obtenerEmpleadoPorLegajo(legajoEmpleado);
                frmEmpleado.setOpcion(opcionElegida);
                frmEmpleado.Show();


            }


        }

        #region Miembros de IOpcion

        public void setOpcion(string op)
        {
            opcionElegida = op;
        }

        public string getOpcion()
        {
            return opcionElegida;
        }

        #endregion

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }
    }
}
